#include <stdio.h>

/*合并两个有序数组*/

/*先直接合并，再选择排序*/
void combarray1(int* num1,int num1Size,int m,int* num2,int num2Size,int n)
{
    for(int i=0;i<num2Size;i++)
    {
        num1[m+i]=num2[i];
    }
    int left=0;
    int right=m+n-1;
    while(left<right)
    {
        int min=left;
        int max=right;
       for(int i=left;i<=right;i++)
        {
            if(num1[i]<num1[min])
            {
                min=i;
            }
            if(num1[i]>num1[max])
            {
                max=i;
            }
        }
        int temp = num1[left];
        num1[left]= num1[min];
        num1[min]=temp;

        if(max==left) //如果最大的刚好在最左边
        {
            max=min;
        }

        temp=num1[right];
        num1[right]=num1[max];
        num1[max]=temp;
        left++;
        right--;
    }
}

/*双指针*/
void combarray2(int* num1,int num1Size,int m,int* num2,int num2Size,int n)
{
    int p1=0,p2=0;
    int current;
    int sorted[m+n];
    while(p1<m||p2<n)
    {
        if(p1==m)
        {
            current=num2[p2++];
        }
        else if(p2==n)
        {
            current=num1[p1++];
        }
        else if(num1[p1]<num2[p2])
        {
            current=num1[p1++];
        }
        else
        {
            current=num2[p2++];
        }
        sorted[p1+p2-1]=current;
    }
    for(int i=0;i<m+n;i++)
    num1[i]=sorted[i];

}

void main()
{
    int nums1[]={1,2,3,0,0,0};
    int nums2[]={2,5,6};
    int nums1Size=sizeof(nums1)/4;
    int nums2Size=sizeof(nums2)/4;
    combarray2(nums1,nums1Size,3,nums2,nums2Size,3);
    for(int i=0;i<nums1Size;i++)
    printf("%d ",nums1[i]);
    printf("\n");

}